﻿// 3616. 进制转换.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include <iostream>
#include <string>
#include <map>
#include <algorithm>

using namespace std;
/*
https://www.acwing.com/problem/content/3619/


十二进制是数学中一种以 12为底数的计数系统，它由 0∼9,a,b组成，与十进制的对应关系是：
0∼9对应 0∼9，a对应 10，b对应 11。

例如，十二进制的 a2，十进制是 122。

输入一个仅含十二进制数字的字符串（字母一律小写，不超过 8个字符），完成下列任务：

输出该十二进制数每一位对应的十进制数（从高位到低位顺序输出，空格隔开）；
实现“十二进制”转“十进制”算法，输出该十二进制数对应的十进制数；
输出转换后的十进制数在内存中的每个二进制位（共 4字节，每字节之间空格隔开）。
输入格式
输入一个十二进制数（字母一律小写，不超过 8个字符）。

输出格式
第一行输出该十二进制数每一位对应的十进制数（由高位到低位，以空格隔开）。

第二行输出该十二进制数对应的十进制数。

第三行输出转换后的十进制数在内存中的每个二进制位（共 4
 个字节，每字节之间空格隔开）。

输入样例：
a2
输出样例：
10 2
122
00000000 00000000 00000000 01111010
*/



string str;

map<char, int> mm {
	{'0',0},
	{'1',1},
	{'2',2},
	{'3',3},
	{'4',4},
	{'5',5},
	{'6',6},
	{'7',7},
	{'8',8},
	{'9',9},
	{'a',10},
	{'b',11}
};

void solve() {
	for (int i = 0; i < str.size(); i++) {
		cout << mm[str[i]] << " ";
	}
	cout << endl;

	int n = 0;
	for (int i = 0; i < str.size(); i++) {
		char c = str[i];
		n= n*12+mm[c];
	}
	cout << n << endl;

	string bin;
	while (n != 0) {
		if (n & 1) {
			bin.push_back('1');
		}
		else {
			bin.push_back('0');
		}
		n >>= 1;
	}

	while (bin.size() != 32) {
		bin.push_back('0');
	}

	string res;
	for (int i = 0; i < bin.size(); i++) {
		if (i % 8 == 0 && i != 0) {
			res += " ";
		}
		res += bin[i];

	}
	reverse(res.begin(), res.end());
	cout << res << endl;
}

int main()
{
	while (cin >> str) {
		solve();
	}

	return 0;
}

